package org.ccay.excel.exporter.service;

import java.io.Serializable;
import java.util.Map;

import org.ccay.core.base.PageVO;
import org.ccay.core.exception.ApplicationException;
import org.ccay.excel.exporter.IExcelExportContext;
import org.ccay.excel.exporter.IExcelExportSupport;

/**
 * Excel 导入助理（Ccay 原生接口，非IExcel）
 * 此接口不提供远程调用
 * @author chaowangbang
 * @since 2012-5-24
 */
public interface IExcelExportAssistant {
	
	/** 
	 * 提交导出任务（写入任务表并放入异步通道）
	 * @param excelType Excel类型
	 * @param condition 条件对象
	 * @return taskId 任务id
	 * @throws ApplicationException 
	 */
	int submitExportTask(String excelType, Serializable condition) throws ApplicationException;
	
	/** 
	 * 获取导出支持Bean
	 * @param excelType
	 * @return
	 */
	IExcelExportSupport getExportSupport(String excelType) throws ApplicationException;
	
	/**
	 * 同步导出的方法	
	 * @return
	 */
	IExcelExportContext exportExcel(String excelType, Serializable condition) throws ApplicationException;

	/**
	 * 
	 * 提交导出任务（写入任务表并放入异步通道）
	 * @param excelType Excel类型
	 * @param condition 条件对象
	 * @param parameters 附加参数 可以存储序列化后的对象
	 * @return
	 * @throws ApplicationException
	 * Created：2013-7-20
	 * @author chaowangbang
	 */
	int submitExportTask(String excelType, Serializable condition,Map<String,Object> parameters) throws ApplicationException;
	
	/**
	 * 
	 * 提交导出任务（写入任务表并放入异步通道）
	 * @param excelType Excel类型
	 * @param condition 条件对象
	 * @param pageVO 筛选分页
	 * @param parameters 附加参数 可以存储序列化后的对象
	 * @return
	 * @throws ApplicationException
	 * Created：2014-3-27
	 * @author chaowangbang
	 */
	int submitExportTask(String excelType, Serializable condition,PageVO pageVO,Map<String,Object> parameters) throws ApplicationException;
	
	/**
	 * 
	 * 同步导出方法
	 * @param excelType Excel类型
	 * @param condition 条件对象
	 * @param parameters 附加参数 可以存储序列化后的对象
	 * @return
	 * @throws ApplicationException
	 * Created：2013-7-20
	 * @author chaowangbang
	 */
	IExcelExportContext exportExcel(String excelType, Serializable condition,Map<String,Object> parameters) throws ApplicationException;
	
	/**
	 * 
	 * 同步导出方法
	 * @param excelType Excel类型
	 * @param condition 条件对象
	 * @param pageVO 筛选分页
	 * @param parameters 附加参数 可以存储序列化后的对象
	 * @return
	 * @throws ApplicationException
	 * Created：2014-3-27
	 * @author chaowangbang
	 */
	IExcelExportContext exportExcel(String excelType, Serializable condition, PageVO pageVO, Map<String,Object> parameters) throws ApplicationException;
}
